package com.palm.platform.domain;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.sql.Types;
import java.util.List;

import lombok.Data;
import org.noear.solon.annotation.Note;
import org.noear.solon.validation.annotation.*;
import org.sagacity.sqltoy.config.annotation.Entity;
import org.sagacity.sqltoy.config.annotation.Id;
import org.sagacity.sqltoy.config.annotation.Column;

@Data
@Note("组织机构")
@Entity(tableName="t_branch")
public class Branch implements Serializable{
    @Id(strategy = "identity")
    @Note("机构ID")
    @Length(max=20)
    @Column(name="id",length=20L,type=Types.INTEGER,nullable=false)
    private Long id;
    /**
    * 机构内部编码
    */
    @Note("机构内部编码")
   // @Id
    @Length(max=20)
    @Column(name="sn",length=20L,type=Types.VARCHAR,nullable=false)
    private String sn;
    /**
    * 父级编码
    */
    @Note("父级编码")
    @Length(max=20)
    @Column(name="pid",length=20L,type=Types.INTEGER)
    private Long pid;
    /**
    * 机构代码
    */
    @Note("机构代码")
    @NotNull
    @Length(max=40)
    @Column(name="code",length=40L,type=Types.VARCHAR,nullable=false)
    private String code;
    /**
    * 名称
    */
    @Note("名称")
    @NotNull
    @Length(max=40)
    @Column(name="name",length=40L,type=Types.VARCHAR,nullable=false)
    private String name;
    /**
    * 全称
    */
    @Note("全称")
    @NotNull
    @Length(max=40)
    @Column(name="full_name",length=40L,type=Types.VARCHAR,nullable=false)
    private String fullName;
    /**
    * 类型
    */
    @Note("类型")
    @NotNull
    @Length(max=10)
    @Column(name="type",length=10L,type=Types.VARCHAR,nullable=false)
    private String type;
    /**
    * 负责人
    */
    @Note("负责人")
    @Length(max=40)
    @Column(name="leader",length=40L,type=Types.VARCHAR)
    private String leader;
    /**
    * 联系电话
    */
    @Note("联系电话")
    @Length(max=40)
    @Column(name="phone",length=40L,type=Types.VARCHAR)
    private String phone;
    /**
    * 电子邮箱
    */
    @Note("电子邮箱")
    @Length(max=100)
    @Column(name="email",length=100L,type=Types.VARCHAR)
    private String email;
    /**
    * 传真
    */
    @Note("传真")
    @Length(max=20)
    @Column(name="fax",length=20L,type=Types.VARCHAR)
    private String fax;
    /**
    * 联系地址
    */
    @Note("联系地址")
    @Length(max=100)
    @Column(name="address",length=100L,type=Types.VARCHAR)
    private String address;
    /**
    * 备注信息
    */
    @Note("备注信息")
    @Length(max=255)
    @Column(name="remark",length=255L,type=Types.VARCHAR)
    private String remark;
    /**
    * 邮政编码
    */
    @Note("邮政编码")
    @Length(max=40)
    @Column(name="zipcode",length=40L,type=Types.VARCHAR)
    private String zipcode;
    /**
    * 顺序
    */
    @Note("顺序")
    @Column(name="sort_rank",length=10L,type=Types.INTEGER)
    private Integer sortRank;
    /**
    * 启用/禁用
    */
    @Note("启用/禁用")
    @Length(max=1)
    @Column(name="enable",length=1L,type=Types.CHAR)
    private String enable;
    /**
    * 最后更新时间
    */
    @Note("最后更新时间")
    @Column(name="update_time",length=26L,type=Types.TIMESTAMP)
    private Date updateTime;
    /**
    * 创建时间
    */
    @Note("创建时间")
    @Column(name="create_time",length=26L,type=Types.TIMESTAMP)
    private Date createTime;
    /**
    * 创建用户
    */
    @Note("创建用户")
    @Length(max=20)
    @Column(name="create_user",length=20L,type=Types.VARCHAR)
    private String createUser;
    /**
    * 更改用户
    */
    @Note("更改用户")
    @Length(max=20)
    @Column(name="update_user",length=20L,type=Types.VARCHAR)
    private String updateUser;
    /**
    * 等级
    */
    @Note("等级")
    @Length(max=2)
    @Column(name="level",length=2L,type=Types.VARCHAR)
    private String level;
//    /**
//    * 加分
//    */
//    @Note("加分")
//    @Length(max=11)
//    @Column(name="jf",length=11L,type=Types.VARCHAR)
//    private String jf;


    private List<Branch> children = new ArrayList<>();
}
